package com.szrt.java.day20170109.demo04;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.junit.Test;


/**
 * 凡是能够干活的都是new出来的类的对象。 类 抽象类  接口 都是不能干活的。
 * @author zsrt
 *
 */
public class CollectionTest {
	
	
	
	/**
	 * Set元素不可以重复 如果你加入的是重复的数据。实际不会增加。 //去掉list重复的数据。 distinct
	 * @throws Exception
	 */
	@Test
	public void setTest() throws Exception {
		
		
		Set<String> set = new HashSet<String>();
		
		set.add("AA");
		set.add("BB");
		set.add("CC");
		set.add("AA");
		
		//此时 长度=   HashMap
		System.out.println(set.size());
		
		Iterator<String> it = set.iterator();
		
		while(it.hasNext()){
			String element =it.next();
			System.out.println(element);
		}
		
		
		
		
		System.out.println(set.contains("B"));
		
		set.clear();
		
		for(String element:set){
			System.out.println(element);
		}
		
		
		
		
		
	}
	
	@Test
	public void listTest() throws Exception {
		//如果在增加的时候判断添加的数据不能重复。相当于set
		List<String> list = new ArrayList<String>();
		
		add(list, "AA");
		add(list, "BB");
		add(list, "CC");
		add(list, "AA");
		
		//此时 长度=4
		System.out.println(list.size()); //3
		
		System.out.println(list);
		
	}
	
	/**
	 * 去掉重复的数据  新增的数据不可以重复  部门新增。 传的是地址
	 * @param addList
	 * @param addData
	 */
	public void add(List<String> addList,String addData){
		//需求：如果让增加的数据不重复?
		//1 遍历集合list  如果集合中的每个数据 与新增的数据 data 都不相等  这时候才可以新增。 如果只要有1个相等，就不能新增进去
		//2 如果集合中的每个数据 与新增的数据 data 都不相等   AA BB CC  AA 需要? 计数器   10分钟。
		
		int counter=0;
		for(int index=0; index<addList.size();index++){
			String data =addList.get(index);
			if(addData.equals(data)){
				//说明2个数据相等   1:让计数器加1 2:后面的循环就不需要
				counter = counter+1;
				break;
			}
		}
		
		if(counter == 0){
			addList.add(addData);
		}
		
	}

}
